package kr.co.m2soft.intern;

import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.FontSubsetGenerator;

public class SubsetGenPerformanceTest {
	public static void main(String[] args) throws DocumentException, IOException {

		HashMap<String, Float> performanceResult = new HashMap<String, Float>();

		String resultPath = "";
		String text = "장마전선이 중부에서 남부로 이동했습니다.\r\n" + "\r\n" + "서울은 하늘이 개고 있지만, 충청과 남부지방에는 비가 내리고 있는데요.\r\n" + "\r\n"
				+ "특히 강한 비구름이 지나는 충북 보은과 경북 영덕, 청송 등에는 호우주의보가 발효 중입니다.\r\n" + "\r\n"
				+ "이 지역으로는 시간당 30mm 안팎의 강한 비가 집중되고 있습니다.\r\n" + "\r\n"
				+ "앞으로 비는 주로 영남 지방에 집중되겠는데요, 영남 내륙에 밤까지 120mm 이상의 많은 비가 더 내리겠고요.\r\n" + "\r\n"
				+ "그 밖의 영남과 전남 내륙에도 30~80mm, 충청 남부와 전북, 전남 해안에도 20~60mm의 비가 오겠습니다.\r\n" + "~_?>+_’”`☆★◎\r\n" + "";

		String path = "fonts/kor/ttf";
		Path dir = null;
		dir = Paths.get(path);

		long startTime, endTime;

		try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
			for (Path file : stream) {
				
				// averageTime for one file
				float avgTime = 0;
				long sum = 0;
				
				// test 10 times
				for (int i = 0; i < 1000; i++) {
					startTime = System.currentTimeMillis();
					resultPath = FontSubsetGenerator.GEN(file.toAbsolutePath().toString(),
							"result\\performance\\" + file.getFileName(), text);
					endTime = System.currentTimeMillis();
					sum += (endTime - startTime);

				} // end test loop

				avgTime = sum / 1000.0f;
				
				String tmp[] = file.toAbsolutePath().toString().split("(\\\\|/|,)");
				String name = tmp[tmp.length - 1];
				name = name.trim();
				
				performanceResult.put(name, avgTime);
				
			} // end file loop
		} // end try
		
		for (String key: performanceResult.keySet()) {
			System.out.printf("%s,%s,%s\n", key, ((new File(key)).length() + ""), (performanceResult.get(key) + ""));
		}
		
	}
}
